﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ThuVienTNN;

namespace KhoTNN
{
    public partial class frmCongNhan : Form
    {
        public frmCongNhan()
        {
            InitializeComponent();
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            if (Parent != null) ThuVienTNN.showTab.CloseCurrentTabPage(this.Parent);
            else this.Close();
        }

        private void frmCongNhan_Load(object sender, EventArgs e)
        {
            CauHinhGrid.CauHinh(grvCongNhan, false, true, false, false, true, true);
            CauHinhGrid.HinhDangCot(grvCongNhan, new[] { colTenCongNhan }, DevExpress.Utils.HorzAlignment.Near);
            CauHinhGrid.HinhDangCot(grvCongNhan, new[] { colDienThoai  }, DevExpress.Utils.HorzAlignment.Far );
            CauHinhGrid.CauHinhLuaChon(grvCongNhan, DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CellSelect, true, false);
            HienThiForm();
            CauHinhLookUpEdit2();
            CauHinhGrid.ThemDong(grvCongNhan ,DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.None  );
            CauHinhGrid.ReadOnlyColumn(grvCongNhan, colMaCN);

            CauHinhTextEdit.Config(repSDT, DevExpress.XtraEditors.Mask.MaskType.RegEx, "[0-9+().]*");
        }

        public void HienThiForm()
        {
            var db = new Context();
            cCongNhanBocXepBindingSource.DataSource = (from p in db.CongNhanBocXeps select new cCongNhanBocXep { TrangThai = false, MaCN =p.MaCN , TenCongNhan =p.TenCongNhan ,DienThoai = p.DienThoai , GioiTinh = p.GioiTinh  }).ToList();
        }

        private void grdCongNhan_DataSourceChanged(object sender, EventArgs e)
        {
            CauHinhGrid.CanChuan(grvCongNhan);
        }
        public void CauHinhLookUpEdit2()
        {
            repGioiTinh.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("GioiTinh", "Giới Tính"));
            repGioiTinh.DisplayMember = "GioiTinh";
            repGioiTinh.ValueMember = "ID";
            repGioiTinh.NullText = "";
            repGioiTinh.NullValuePromptShowForEmptyValue = true;
            repGioiTinh.ShowHeader = false;
            repGioiTinh.ShowFooter = false;

            repGioiTinh.DataSource = (new cGioiTinh()).LayDuDieu();

        }
        private void lueGioiTinh_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void grvCongNhan_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
           
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            grvCongNhan.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom;
            btnXoa.Enabled = false;
            grvCongNhan.MoveLast();
            grvCongNhan.MoveNext ();
            grvCongNhan.FocusedColumn = colTenCongNhan;
            grvCongNhan.ShowEditor();

        }

        private void btnGhi_Click(object sender, EventArgs e)
        {
            var rows = cCongNhanBocXepBindingSource .DataSource as List <cCongNhanBocXep >;

            rows = rows.Where(w => w.TrangThai == true).ToList();

            if (rows.Count != 0)
            {
                var rs = MessageBox.Show("Bạn có muốn ghi những dòng đã sửa không?", "Chú ý!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (rs == System.Windows.Forms.DialogResult.Yes)
                {
                    foreach (var row in rows)
                    {
                        if (row.MaCN == 0)
                        {
                            Context db = new Context();
                            var insertItem = new CongNhanBocXep();
                            insertItem.TenCongNhan = row.TenCongNhan;
                            insertItem.DienThoai = row.DienThoai;
                            insertItem.GioiTinh = row.GioiTinh;
                            db.CongNhanBocXeps.InsertOnSubmit(insertItem);
                            db.SubmitChanges();
                        }
                        else
                        {
                            Context db = new Context();
                            var updateItem = db.CongNhanBocXeps.SingleOrDefault(w => w.MaCN == row.MaCN);
                            updateItem.TenCongNhan = row.TenCongNhan;
                            updateItem.DienThoai = row.DienThoai;
                            updateItem.GioiTinh = row.GioiTinh;
                            db.SubmitChanges();
                        }

                    }
                    HienThiForm();

                }
            }

            grvCongNhan.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.None;
            btnXoa.Enabled = true ;
            
        }
        //thuộc tính của nút xóa
        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (grvCongNhan.IsDataRow(grvCongNhan.FocusedRowHandle) && !grvCongNhan.IsNewItemRow(grvCongNhan.FocusedRowHandle))
            {
                var rs = MessageBox.Show("Bạn có muốn xóa dòng này không?", "Chú ý!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (rs == System.Windows.Forms.DialogResult.Yes)
                {
                    var row = grvCongNhan.GetFocusedRow() as cCongNhanBocXep;
                    //nếu mã của dòng đó bằng 0 thì xóa dòng trong grid
                    if (row.MaCN == 0)
                    {
                        grvCongNhan.DeleteRow(grvCongNhan.FocusedRowHandle);
                    }
                    else
                    //nếu mã khác 0 thì xóa trong csdl
                    {
                        Context db = new Context();
                        var deleteItem = db.CongNhanBocXeps.SingleOrDefault(w => w.MaCN == row.MaCN );
                        db.CongNhanBocXeps.DeleteOnSubmit(deleteItem);
                        db.SubmitChanges();

                        grvCongNhan.DeleteRow(grvCongNhan.FocusedRowHandle);
                    }
                    
                }
            }
        }
        //đổi màu những dòng thay đổi và thêm mới thành màu vàng
        private void grvCongNhan_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            if (e.RowHandle >= 0)
            {
                if ((bool)grvCongNhan.GetRowCellValue(e.RowHandle, colTrangThai) == true)
                {
                    e.Appearance.BackColor = Color.Yellow;

                }
            }
        }
        //bắt lỗi chưa nhập đủ thông tin
        private void grvCongNhan_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            var row = grvCongNhan.GetRow(grvCongNhan.FocusedRowHandle) as cCongNhanBocXep;
            if (row.TenCongNhan==null || row.TenCongNhan == "")
            {

                e.Valid = false;
                grvCongNhan.SetColumnError(colTenCongNhan, "Bạn phải điền đầy đủ thông tin");
                return;
            }
            if (row.GioiTinh == null )
            {

                e.Valid = false;
                grvCongNhan.SetColumnError(colGioiTinh , "Bạn phải điền đầy đủ thông tin");
                return;
            }
            if (row.DienThoai == null ||row.DienThoai == ""  )
            {

                e.Valid = false;
                grvCongNhan.SetColumnError(colDienThoai, "Bạn phải điền đầy đủ thông tin");
                return;
            }
            if (e.RowHandle >= 0 || grvCongNhan .IsNewItemRow (e.RowHandle ))
            {
                grvCongNhan.SetRowCellValue(e.RowHandle, colTrangThai, true);
                grvCongNhan.Invalidate();
            }
        }

       

       

        private void grvCongNhan_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
        }

       
    

        private void frmCongNhan_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == (Keys.Control | Keys.T))
            {
                btnThem.PerformClick();
            }
        }
    }
    //tạo class giới tính để hiển thị ra Nam Nữ khi nhấn vào grid
    public class cGioiTinh 
    {
        public int ID { set;get;}
        public string GioiTinh { set; get; }
        public List<cGioiTinh> LayDuDieu()
        {
            return new List<cGioiTinh> { new cGioiTinh { ID = 0, GioiTinh = "Nữ" }, new cGioiTinh { ID = 1, GioiTinh = "Nam" } };
        }
    }
    public class cCongNhanBocXep
    {
        public bool TrangThai { get; set; }
        public int MaCN { get; set; }
        public int? GioiTinh { get; set; }
        public string TenCongNhan { get; set; }
        public string DienThoai { get; set; }
    }
}
